// 这里代码很多价值，必须亲力亲为，自己写
// 路由守卫代码
// 导入router
import router from '@/router'
// 导入store实例:因为要用里边的属性方法
import store from '@/store'
// 导入nprogress模块（进入页面的加载提示）
import NProgress from 'nprogress'
// 导入nprogress样式
import 'nprogress/nprogress.css'
// 白名单：不需要登陆就可以访问的路由路径
const whiteList = ['/login', '/404']
// 注册路由全局前置守卫
router.beforeEach((to, from, next) => {
  // 开始进度条的加载提示
  NProgress.start()
  // 从vuex获取token
  const { token } = store.state.user
  // 判断
  if (token) { // 登陆了
    // 如果要去的路由路径在白名单中
    if (whiteList.includes(to.path)) {
      // 没必要去了，去首页
      next('/')
      NProgress.done()
    } else {
      // 否则放行
      next()
    }
  } else { // 未登录
    // 进一步判断：要去的路由路径是否在白名单中
    if (whiteList.includes(to.path)) {
      // 如果在白名单就放行
      next()
    } else {
      // 如果不在白名单，跳转至登录并携带回跳地址
      next('/login')
      NProgress.done()
    }
  }
})
// 路由全局后置钩子
router.afterEach((to, from) => {
  // 关闭进度条的加载提示
  NProgress.done()
})
